#include <cstdio>
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
int T;
int test_case;
int pnum;
int count=0;
int index;
setbuf(stdout, NULL);
scanf("%d", &T);
for(test_case = 1; test_case <= T; ++test_case) {
scanf("%d",&pnum);
int *per = new int[pnum];
for(int a=0; a<pnum; a++)
{
scanf("%d",&per[a]);
}
for(int a=0; a<pnum; a++)
{
index = 0;
while(1)
{
if( ( per[a] + pnum ) >= ( per[index]+1 ) )
{
index++;
}
else
{
break;
}
if(index == (pnum) )
{
count++;
break;
}
}
}
printf("Case #%d\n", test_case);
printf("%d\n", count);
delete[] per;
}
return 0;
}
실행시간 초과로나오고.. 여기서 뭘고쳐야될까요?
삼성도 java가 느려터졋다는 걸 인정하는군
꼼새미 써라 입력 받을때 계산하셈 ㅋㅋㅋ
또다른 꼼새미 입력 받은거 퀵소트 쓰던 아님 그 이진트리로(기억잘안나는데 제일빠르게 정렬하는거있음) 정렬한다음 앞에서부터 세면될듯
정렬 후 MAX_SCORE - N 까지의 점수 보유자들이 우승 가능성이 있겠지? 10명이 참여하고 230점인 사람과 160점인 사람이 있다면 160인 사람이 막판에 10점(N)을 얻은들 절대 못이기지.
근데 1,3,3,4 이렇게 중복되잇는 점수가 있으면 MAX_SCORE-N로 안되는거같아서..
동점자 없대 있다면 1초안에 하긴 어려울듯
그리고 세는것도 첨부터세지말고 바이너리식으로 세면될듯 반 세고 반세고 이런식으로 더 줄일려면 값의 범위에따라서 몇분에몇만큼줄이고 몇분에몇만큼 줄이고 하면됌 ㅋㅋ