Submission #1111213


Source Code Expand

#include <bits/stdc++.h>

using namespace std;

const int maxRooms = 300000;
const int maxStudents = 100000;
int N, M;
int s[maxStudents], t[maxStudents];
int start[maxRooms], stop[maxRooms];
bool canLeave[maxRooms];
vector< pair<int, int> > canLeaveSection;

void init() {
  cin >> N >> M;

  for(int i = 0; i < M; i++) {
    cin >> s[i] >> t[i];
    s[i] -= 1;
    t[i] -= 1;
    start[s[i]] += 1;
    stop[t[i]] += 1;
  }
}

void solve() {

  int current = 0;

  for(int i = 0; i < N; i++) {
    if(i == 0)
      current += start[i];
    else
      current += start[i] - stop[i - 1];

    if(current >= 2) 
      canLeave[i] = true;
  }

  int sectionStart = -1, sectionEnd = -1;
  
  for(int i = 0; i < N; i++) {
    if(canLeave[i] && sectionStart == -1) {
      sectionStart = i;
    }
    if(canLeave[i] == false && sectionStart != -1) {
      sectionEnd = i - 1;
      pair<int, int> newSection;
      newSection.first = sectionStart;
      newSection.second = sectionEnd;
      canLeaveSection.push_back(newSection);
      sectionStart = sectionEnd = -1;
    }
  }

  if(sectionStart != -1) {
    pair<int, int> newSection;
    newSection.first = sectionStart;
    newSection.second = N - 1;
    canLeaveSection.push_back(newSection);
  }

  int sectionRightmost[maxRooms];

  for(int i = 0; i < maxRooms; i++) {
    sectionRightmost[i] = -1;
  }
  
  for(auto i: canLeaveSection) {
    for(int k = i.first; k <= i.second; k++) {
      sectionRightmost[k] = i.second;
    }
  }

  vector<int> ans;
  
  for(int i = 0; i < M; i++) {
    if(sectionRightmost[s[i]] != -1 && sectionRightmost[s[i]] >= t[i]) {
      ans.push_back(i);
    }
  }

  cout << ans.size() << endl;

  for(int i: ans) {
    cout << i + 1 << endl;
  }
}


  

int main() {
  init();
  solve();

}

Submission Info

Submission Time
Task B - ドキドキデート大作戦高橋君
User kkty
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1871 Byte
Status AC
Exec Time 217 ms
Memory 5880 KB

Judge Result

Set Name Sample Subtask1 All
Score / Max Score 0 / 0 30 / 30 70 / 70
Status
AC × 3
AC × 12
AC × 20
Set Name Test Cases
Sample subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt
Subtask1 subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt
All subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt
Case Name Status Exec Time Memory
subtask0_sample_01.txt AC 2 ms 1408 KB
subtask0_sample_02.txt AC 2 ms 1408 KB
subtask0_sample_03.txt AC 2 ms 1408 KB
subtask1_01.txt AC 63 ms 4608 KB
subtask1_02.txt AC 216 ms 5880 KB
subtask1_03.txt AC 62 ms 4472 KB
subtask1_04.txt AC 142 ms 4600 KB
subtask1_05.txt AC 141 ms 4600 KB
subtask1_06.txt AC 2 ms 1408 KB
subtask1_07.txt AC 2 ms 1408 KB
subtask1_08.txt AC 2 ms 1408 KB
subtask1_09.txt AC 2 ms 1408 KB
subtask2_01.txt AC 202 ms 3576 KB
subtask2_02.txt AC 217 ms 4344 KB
subtask2_03.txt AC 2 ms 1408 KB
subtask2_04.txt AC 2 ms 1408 KB
subtask2_05.txt AC 2 ms 1408 KB
subtask2_06.txt AC 2 ms 1408 KB
subtask2_07.txt AC 2 ms 1408 KB
subtask2_08.txt AC 213 ms 5112 KB