tozangezan's diary

勝手にソースコードをコピペして利用しないでください。

SRM過去問 SRM482 Div1 Easy

これはやるだけなんだけど、そのやるだけが非常に面倒。Div2は楽だったんだけどね……
JavaのQueueが面倒なつくりなのでC++のQueueつかいました。初めての黄色点。

#include<queue>
#include<cstdio>
using namespace std;
class LockersDivOne{
	public:
		int lastOpened(int a){
			queue <int>q;
			for(int i=1;i<=a;i++){
				q.push(i);
			}
			int now=1;
			int count=0;
			while(q.size()>1){
				int c=q.size();
				int last;
				//printf("%d\n",c/(now+1));
				for(int i=0;i<=c/(now+1);i++){
					count=now;
					//printf("%d\n",q.front());
					last=q.front();
					q.pop();
					if(q.size()==1)return q.front();
					if(q.front()<last)break;
					while(count--){
						//printf("THOROUGH %d\n",q.front());
						last=q.front();
						q.push(q.front());
						q.pop();
					
						if(q.size()==1)return q.front();
						if(q.front()<last)goto takeshi;	
					}
				}
				//q.pop();
				takeshi:
				//printf("OK\n");
				now++;
			}
			
			return q.front();
		}
};

どうして157.64点しか取れないの