제출 #93480

#제출 시각아이디문제언어결과실행 시간메모리
93480tincamateiTeams (IOI15_teams)C++14
0 / 100
4098 ms66584 KiB
#include <bits/stdc++.h>
#include "teams.h"

using namespace std;

const int MAX_N = 500000;

int n;
int *a, *b;
int poz[1+MAX_N];

vector<int> goright[1+MAX_N];
vector<int> goleft[1+MAX_N];

void init(int N, int A[], int B[]) {
  a = A;
  b = B;
  n = N;

  for(int i = 0; i < n; ++i)
    poz[i] = i;
  for(int i = 0; i < N; ++i) {
    goright[a[i]].push_back(i);
    goleft[b[i]].push_back(i);
  }
}

int can(int M, int K[]) {
  set<pair<int, int> > xd;

  int lastup = 0;
  for(int i = 1; i <= n; ++i) {
    for(int j = 0; j < goright[i].size(); ++j) {
      int it = goright[i][j];
      xd.insert(make_pair(b[it], it));
    }

    while(lastup < M && K[lastup] == i) {
      for(int j = 0; j < i; ++j) {
        if(xd.empty())
          return false;
        xd.erase(xd.begin());
      }
      ++lastup;
    }

    for(int j = 0; j < goleft[i].size(); ++j) {
      int it = goleft[i][j];
      xd.erase(make_pair(i, it));
    }
  }
	return true;
}

컴파일 시 표준 에러 (stderr) 메시지

teams.cpp: In function 'int can(int, int*)':
teams.cpp:33:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int j = 0; j < goright[i].size(); ++j) {
                    ~~^~~~~~~~~~~~~~~~~~~
teams.cpp:47:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int j = 0; j < goleft[i].size(); ++j) {
                    ~~^~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...