제출 #1228796

#제출 시각아이디문제언어결과실행 시간메모리
1228796salmonArranging Tickets (JOI17_arranging_tickets)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; int N; int M; int l[3100]; int r[3100]; int pre[3100]; int diff[3100]; int main(){ scanf(" %d",&N); scanf(" %d",&M); for(int i = 1; i <= M; i++){ scanf(" %d",&l[i]); scanf(" %d",&r[i]); if(l[i] > r[i]) swap(l[i],r[i]); r[i]--; int h; scanf(" %d",&h); } pre[0] = 0; int s = 1; int e = N + 1; while(s != e){ int m = (s + e)/2; for(int i = 1; i <= N; i++) pre[i] = 0; for(int i = 1; i <= N; i++){ pre[l[i]]++; pre[r[i] + 1]--; } for(int i = 1; i <= N; i++){ pre[i] += pre[i - 1]; } pair<int,int> big = {0,-1}; for(int i = 1; i <= N; i++){ big = max(big,{pre[i],i}); } int in = big.second; vector<pair<int,int>> proc; int big1 = 0; for(int i = 1; i <= in; i++){ if(big1 < pre[i]){ proc.push_back({pre[i],i}); big1 = pre[i]; } } for(int i = 0; i <= N; i++) diff[i] = 0; int num = 0; bool visited[M + 5]; for(int i = 0; i <= M; i++) visited[i] = false; for(pair<int,int> ii : proc){ while(true){ if(ii.first - num <= m) break; pair<int,int> chose = {0,-1}; for(int i = 1; i <= M; i++){ if(!visited[i] && l[i] <= ii.second){ chose = max(chose,{r[i],i}); } } if(chose.second == -1){ break; } num++; visited[chose.second] = true; diff[1]++; diff[l[chose.second]]--; diff[l[chose.second]]--; diff[r[chose.second] + 1]++; diff[r[chose.second] + 1]++; } } bool die = false; for(int i = 1; i <= N; i++){ diff[i] += diff[i - 1]; if(diff[i] + pre[i] > m) die = true; } printf("%d %d %d\n") if(die){ s = m + 1; } else e = m; } printf("%d\n",s); }

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

arranging_tickets.cpp: In function 'int main()':
arranging_tickets.cpp:106:26: warning: format '%d' expects a matching 'int' argument [-Wformat=]
  106 |                 printf("%d %d %d\n")
      |                         ~^
      |                          |
      |                          int
arranging_tickets.cpp:106:29: warning: format '%d' expects a matching 'int' argument [-Wformat=]
  106 |                 printf("%d %d %d\n")
      |                            ~^
      |                             |
      |                             int
arranging_tickets.cpp:106:32: warning: format '%d' expects a matching 'int' argument [-Wformat=]
  106 |                 printf("%d %d %d\n")
      |                               ~^
      |                                |
      |                                int
arranging_tickets.cpp:106:37: error: expected ';' before 'if'
  106 |                 printf("%d %d %d\n")
      |                                     ^
      |                                     ;
  107 | 
  108 |                 if(die){
      |                 ~~                   
arranging_tickets.cpp:111:17: error: 'else' without a previous 'if'
  111 |                 else e = m;
      |                 ^~~~
arranging_tickets.cpp:13:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   13 |         scanf(" %d",&N);
      |         ~~~~~^~~~~~~~~~
arranging_tickets.cpp:14:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   14 |         scanf(" %d",&M);
      |         ~~~~~^~~~~~~~~~
arranging_tickets.cpp:17:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |                 scanf(" %d",&l[i]);
      |                 ~~~~~^~~~~~~~~~~~~
arranging_tickets.cpp:18:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   18 |                 scanf(" %d",&r[i]);
      |                 ~~~~~^~~~~~~~~~~~~
arranging_tickets.cpp:25:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   25 |                 scanf(" %d",&h);
      |                 ~~~~~^~~~~~~~~~